* Step 1: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            app(cons(x,l1),l2) -> cons(x,app(l1,l2))
            app(nil(),l) -> l
            eq(0(),0()) -> true()
            eq(0(),s(x)) -> false()
            eq(s(x),0()) -> false()
            eq(s(x),s(y)) -> eq(x,y)
            if(false(),x,y) -> y
            if(true(),x,y) -> x
            ifinter(false(),x,l1,l2) -> inter(l1,l2)
            ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2))
            ifmem(false(),x,l) -> mem(x,l)
            ifmem(true(),x,l) -> true()
            inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1)
            inter(x,nil()) -> nil()
            inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2)
            inter(nil(),x) -> nil()
            mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l)
            mem(x,nil()) -> false()
        - Signature:
            {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {app,eq,if,ifinter,ifmem,inter,mem} and constructors {0
            ,cons,false,nil,s,true}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        The weightgap principle applies using the following nonconstant growth matrix-interpretation:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          The following argument positions are considered usable:
            uargs(cons) = {2},
            uargs(ifinter) = {1},
            uargs(ifmem) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                  p(0) = [0]                           
                p(app) = [4] x1 + [1] x2 + [0]         
               p(cons) = [1] x2 + [1]                  
                 p(eq) = [0]                           
              p(false) = [2]                           
                 p(if) = [5] x1 + [1] x2 + [1] x3 + [5]
            p(ifinter) = [1] x1 + [1] x3 + [1] x4 + [0]
              p(ifmem) = [1] x1 + [0]                  
              p(inter) = [1] x1 + [1] x2 + [3]         
                p(mem) = [2]                           
                p(nil) = [2]                           
                  p(s) = [1] x1 + [0]                  
               p(true) = [2]                           
          
          Following rules are strictly oriented:
            app(cons(x,l1),l2) = [4] l1 + [1] l2 + [4]     
                               > [4] l1 + [1] l2 + [1]     
                               = cons(x,app(l1,l2))        
          
                  app(nil(),l) = [1] l + [8]               
                               > [1] l + [0]               
                               = l                         
          
               if(false(),x,y) = [1] x + [1] y + [15]      
                               > [1] y + [0]               
                               = y                         
          
                if(true(),x,y) = [1] x + [1] y + [15]      
                               > [1] x + [0]               
                               = x                         
          
          inter(l1,cons(x,l2)) = [1] l1 + [1] l2 + [4]     
                               > [1] l1 + [1] l2 + [2]     
                               = ifinter(mem(x,l1),x,l2,l1)
          
                inter(x,nil()) = [1] x + [5]               
                               > [2]                       
                               = nil()                     
          
          inter(cons(x,l1),l2) = [1] l1 + [1] l2 + [4]     
                               > [1] l1 + [1] l2 + [2]     
                               = ifinter(mem(x,l2),x,l1,l2)
          
                inter(nil(),x) = [1] x + [5]               
                               > [2]                       
                               = nil()                     
          
              mem(x,cons(y,l)) = [2]                       
                               > [0]                       
                               = ifmem(eq(x,y),x,l)        
          
          
          Following rules are (at-least) weakly oriented:
                       eq(0(),0()) =  [0]                  
                                   >= [2]                  
                                   =  true()               
          
                      eq(0(),s(x)) =  [0]                  
                                   >= [2]                  
                                   =  false()              
          
                      eq(s(x),0()) =  [0]                  
                                   >= [2]                  
                                   =  false()              
          
                     eq(s(x),s(y)) =  [0]                  
                                   >= [0]                  
                                   =  eq(x,y)              
          
          ifinter(false(),x,l1,l2) =  [1] l1 + [1] l2 + [2]
                                   >= [1] l1 + [1] l2 + [3]
                                   =  inter(l1,l2)         
          
           ifinter(true(),x,l1,l2) =  [1] l1 + [1] l2 + [2]
                                   >= [1] l1 + [1] l2 + [4]
                                   =  cons(x,inter(l1,l2)) 
          
                ifmem(false(),x,l) =  [2]                  
                                   >= [2]                  
                                   =  mem(x,l)             
          
                 ifmem(true(),x,l) =  [2]                  
                                   >= [2]                  
                                   =  true()               
          
                      mem(x,nil()) =  [2]                  
                                   >= [2]                  
                                   =  false()              
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
* Step 2: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            eq(0(),0()) -> true()
            eq(0(),s(x)) -> false()
            eq(s(x),0()) -> false()
            eq(s(x),s(y)) -> eq(x,y)
            ifinter(false(),x,l1,l2) -> inter(l1,l2)
            ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2))
            ifmem(false(),x,l) -> mem(x,l)
            ifmem(true(),x,l) -> true()
            mem(x,nil()) -> false()
        - Weak TRS:
            app(cons(x,l1),l2) -> cons(x,app(l1,l2))
            app(nil(),l) -> l
            if(false(),x,y) -> y
            if(true(),x,y) -> x
            inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1)
            inter(x,nil()) -> nil()
            inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2)
            inter(nil(),x) -> nil()
            mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l)
        - Signature:
            {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {app,eq,if,ifinter,ifmem,inter,mem} and constructors {0
            ,cons,false,nil,s,true}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        The weightgap principle applies using the following nonconstant growth matrix-interpretation:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          The following argument positions are considered usable:
            uargs(cons) = {2},
            uargs(ifinter) = {1},
            uargs(ifmem) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                  p(0) = [0]                  
                p(app) = [4] x1 + [1] x2 + [3]
               p(cons) = [1] x2 + [1]         
                 p(eq) = [1]                  
              p(false) = [5]                  
                 p(if) = [2] x2 + [1] x3 + [1]
            p(ifinter) = [1] x1 + [0]         
              p(ifmem) = [1] x1 + [3]         
              p(inter) = [6]                  
                p(mem) = [6]                  
                p(nil) = [0]                  
                  p(s) = [1]                  
               p(true) = [1]                  
          
          Following rules are strictly oriented:
          ifmem(false(),x,l) = [8]     
                             > [6]     
                             = mem(x,l)
          
           ifmem(true(),x,l) = [4]     
                             > [1]     
                             = true()  
          
                mem(x,nil()) = [6]     
                             > [5]     
                             = false() 
          
          
          Following rules are (at-least) weakly oriented:
                app(cons(x,l1),l2) =  [4] l1 + [1] l2 + [7]     
                                   >= [4] l1 + [1] l2 + [4]     
                                   =  cons(x,app(l1,l2))        
          
                      app(nil(),l) =  [1] l + [3]               
                                   >= [1] l + [0]               
                                   =  l                         
          
                       eq(0(),0()) =  [1]                       
                                   >= [1]                       
                                   =  true()                    
          
                      eq(0(),s(x)) =  [1]                       
                                   >= [5]                       
                                   =  false()                   
          
                      eq(s(x),0()) =  [1]                       
                                   >= [5]                       
                                   =  false()                   
          
                     eq(s(x),s(y)) =  [1]                       
                                   >= [1]                       
                                   =  eq(x,y)                   
          
                   if(false(),x,y) =  [2] x + [1] y + [1]       
                                   >= [1] y + [0]               
                                   =  y                         
          
                    if(true(),x,y) =  [2] x + [1] y + [1]       
                                   >= [1] x + [0]               
                                   =  x                         
          
          ifinter(false(),x,l1,l2) =  [5]                       
                                   >= [6]                       
                                   =  inter(l1,l2)              
          
           ifinter(true(),x,l1,l2) =  [1]                       
                                   >= [7]                       
                                   =  cons(x,inter(l1,l2))      
          
              inter(l1,cons(x,l2)) =  [6]                       
                                   >= [6]                       
                                   =  ifinter(mem(x,l1),x,l2,l1)
          
                    inter(x,nil()) =  [6]                       
                                   >= [0]                       
                                   =  nil()                     
          
              inter(cons(x,l1),l2) =  [6]                       
                                   >= [6]                       
                                   =  ifinter(mem(x,l2),x,l1,l2)
          
                    inter(nil(),x) =  [6]                       
                                   >= [0]                       
                                   =  nil()                     
          
                  mem(x,cons(y,l)) =  [6]                       
                                   >= [4]                       
                                   =  ifmem(eq(x,y),x,l)        
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
* Step 3: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            eq(0(),0()) -> true()
            eq(0(),s(x)) -> false()
            eq(s(x),0()) -> false()
            eq(s(x),s(y)) -> eq(x,y)
            ifinter(false(),x,l1,l2) -> inter(l1,l2)
            ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2))
        - Weak TRS:
            app(cons(x,l1),l2) -> cons(x,app(l1,l2))
            app(nil(),l) -> l
            if(false(),x,y) -> y
            if(true(),x,y) -> x
            ifmem(false(),x,l) -> mem(x,l)
            ifmem(true(),x,l) -> true()
            inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1)
            inter(x,nil()) -> nil()
            inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2)
            inter(nil(),x) -> nil()
            mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l)
            mem(x,nil()) -> false()
        - Signature:
            {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {app,eq,if,ifinter,ifmem,inter,mem} and constructors {0
            ,cons,false,nil,s,true}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        The weightgap principle applies using the following nonconstant growth matrix-interpretation:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          The following argument positions are considered usable:
            uargs(cons) = {2},
            uargs(ifinter) = {1},
            uargs(ifmem) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                  p(0) = [0]                                    
                p(app) = [5] x1 + [4] x2 + [4]                  
               p(cons) = [1] x1 + [1] x2 + [2]                  
                 p(eq) = [0]                                    
              p(false) = [1]                                    
                 p(if) = [2] x1 + [4] x2 + [2] x3 + [0]         
            p(ifinter) = [1] x1 + [3] x2 + [4] x3 + [4] x4 + [0]
              p(ifmem) = [1] x1 + [1]                           
              p(inter) = [4] x1 + [4] x2 + [0]                  
                p(mem) = [1]                                    
                p(nil) = [1]                                    
                  p(s) = [1] x1 + [2]                           
               p(true) = [1]                                    
          
          Following rules are strictly oriented:
          ifinter(false(),x,l1,l2) = [4] l1 + [4] l2 + [3] x + [1]
                                   > [4] l1 + [4] l2 + [0]        
                                   = inter(l1,l2)                 
          
          
          Following rules are (at-least) weakly oriented:
               app(cons(x,l1),l2) =  [5] l1 + [4] l2 + [5] x + [14]
                                  >= [5] l1 + [4] l2 + [1] x + [6] 
                                  =  cons(x,app(l1,l2))            
          
                     app(nil(),l) =  [4] l + [9]                   
                                  >= [1] l + [0]                   
                                  =  l                             
          
                      eq(0(),0()) =  [0]                           
                                  >= [1]                           
                                  =  true()                        
          
                     eq(0(),s(x)) =  [0]                           
                                  >= [1]                           
                                  =  false()                       
          
                     eq(s(x),0()) =  [0]                           
                                  >= [1]                           
                                  =  false()                       
          
                    eq(s(x),s(y)) =  [0]                           
                                  >= [0]                           
                                  =  eq(x,y)                       
          
                  if(false(),x,y) =  [4] x + [2] y + [2]           
                                  >= [1] y + [0]                   
                                  =  y                             
          
                   if(true(),x,y) =  [4] x + [2] y + [2]           
                                  >= [1] x + [0]                   
                                  =  x                             
          
          ifinter(true(),x,l1,l2) =  [4] l1 + [4] l2 + [3] x + [1] 
                                  >= [4] l1 + [4] l2 + [1] x + [2] 
                                  =  cons(x,inter(l1,l2))          
          
               ifmem(false(),x,l) =  [2]                           
                                  >= [1]                           
                                  =  mem(x,l)                      
          
                ifmem(true(),x,l) =  [2]                           
                                  >= [1]                           
                                  =  true()                        
          
             inter(l1,cons(x,l2)) =  [4] l1 + [4] l2 + [4] x + [8] 
                                  >= [4] l1 + [4] l2 + [3] x + [1] 
                                  =  ifinter(mem(x,l1),x,l2,l1)    
          
                   inter(x,nil()) =  [4] x + [4]                   
                                  >= [1]                           
                                  =  nil()                         
          
             inter(cons(x,l1),l2) =  [4] l1 + [4] l2 + [4] x + [8] 
                                  >= [4] l1 + [4] l2 + [3] x + [1] 
                                  =  ifinter(mem(x,l2),x,l1,l2)    
          
                   inter(nil(),x) =  [4] x + [4]                   
                                  >= [1]                           
                                  =  nil()                         
          
                 mem(x,cons(y,l)) =  [1]                           
                                  >= [1]                           
                                  =  ifmem(eq(x,y),x,l)            
          
                     mem(x,nil()) =  [1]                           
                                  >= [1]                           
                                  =  false()                       
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
* Step 4: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            eq(0(),0()) -> true()
            eq(0(),s(x)) -> false()
            eq(s(x),0()) -> false()
            eq(s(x),s(y)) -> eq(x,y)
            ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2))
        - Weak TRS:
            app(cons(x,l1),l2) -> cons(x,app(l1,l2))
            app(nil(),l) -> l
            if(false(),x,y) -> y
            if(true(),x,y) -> x
            ifinter(false(),x,l1,l2) -> inter(l1,l2)
            ifmem(false(),x,l) -> mem(x,l)
            ifmem(true(),x,l) -> true()
            inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1)
            inter(x,nil()) -> nil()
            inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2)
            inter(nil(),x) -> nil()
            mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l)
            mem(x,nil()) -> false()
        - Signature:
            {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {app,eq,if,ifinter,ifmem,inter,mem} and constructors {0
            ,cons,false,nil,s,true}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        The weightgap principle applies using the following nonconstant growth matrix-interpretation:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          The following argument positions are considered usable:
            uargs(cons) = {2},
            uargs(ifinter) = {1},
            uargs(ifmem) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                  p(0) = [0]                           
                p(app) = [1] x2 + [4]                  
               p(cons) = [1] x2 + [0]                  
                 p(eq) = [1]                           
              p(false) = [2]                           
                 p(if) = [4] x1 + [1] x2 + [1] x3 + [0]
            p(ifinter) = [1] x1 + [3]                  
              p(ifmem) = [1] x1 + [1]                  
              p(inter) = [5]                           
                p(mem) = [2]                           
                p(nil) = [5]                           
                  p(s) = [1] x1 + [0]                  
               p(true) = [0]                           
          
          Following rules are strictly oriented:
          eq(0(),0()) = [1]   
                      > [0]   
                      = true()
          
          
          Following rules are (at-least) weakly oriented:
                app(cons(x,l1),l2) =  [1] l2 + [4]              
                                   >= [1] l2 + [4]              
                                   =  cons(x,app(l1,l2))        
          
                      app(nil(),l) =  [1] l + [4]               
                                   >= [1] l + [0]               
                                   =  l                         
          
                      eq(0(),s(x)) =  [1]                       
                                   >= [2]                       
                                   =  false()                   
          
                      eq(s(x),0()) =  [1]                       
                                   >= [2]                       
                                   =  false()                   
          
                     eq(s(x),s(y)) =  [1]                       
                                   >= [1]                       
                                   =  eq(x,y)                   
          
                   if(false(),x,y) =  [1] x + [1] y + [8]       
                                   >= [1] y + [0]               
                                   =  y                         
          
                    if(true(),x,y) =  [1] x + [1] y + [0]       
                                   >= [1] x + [0]               
                                   =  x                         
          
          ifinter(false(),x,l1,l2) =  [5]                       
                                   >= [5]                       
                                   =  inter(l1,l2)              
          
           ifinter(true(),x,l1,l2) =  [3]                       
                                   >= [5]                       
                                   =  cons(x,inter(l1,l2))      
          
                ifmem(false(),x,l) =  [3]                       
                                   >= [2]                       
                                   =  mem(x,l)                  
          
                 ifmem(true(),x,l) =  [1]                       
                                   >= [0]                       
                                   =  true()                    
          
              inter(l1,cons(x,l2)) =  [5]                       
                                   >= [5]                       
                                   =  ifinter(mem(x,l1),x,l2,l1)
          
                    inter(x,nil()) =  [5]                       
                                   >= [5]                       
                                   =  nil()                     
          
              inter(cons(x,l1),l2) =  [5]                       
                                   >= [5]                       
                                   =  ifinter(mem(x,l2),x,l1,l2)
          
                    inter(nil(),x) =  [5]                       
                                   >= [5]                       
                                   =  nil()                     
          
                  mem(x,cons(y,l)) =  [2]                       
                                   >= [2]                       
                                   =  ifmem(eq(x,y),x,l)        
          
                      mem(x,nil()) =  [2]                       
                                   >= [2]                       
                                   =  false()                   
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
* Step 5: WeightGap WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            eq(0(),s(x)) -> false()
            eq(s(x),0()) -> false()
            eq(s(x),s(y)) -> eq(x,y)
            ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2))
        - Weak TRS:
            app(cons(x,l1),l2) -> cons(x,app(l1,l2))
            app(nil(),l) -> l
            eq(0(),0()) -> true()
            if(false(),x,y) -> y
            if(true(),x,y) -> x
            ifinter(false(),x,l1,l2) -> inter(l1,l2)
            ifmem(false(),x,l) -> mem(x,l)
            ifmem(true(),x,l) -> true()
            inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1)
            inter(x,nil()) -> nil()
            inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2)
            inter(nil(),x) -> nil()
            mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l)
            mem(x,nil()) -> false()
        - Signature:
            {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {app,eq,if,ifinter,ifmem,inter,mem} and constructors {0
            ,cons,false,nil,s,true}
    + Applied Processor:
        WeightGap {wgDimension = 1, wgDegree = 1, wgKind = Algebraic, wgUArgs = UArgs, wgOn = WgOnAny}
    + Details:
        The weightgap principle applies using the following nonconstant growth matrix-interpretation:
          We apply a matrix interpretation of kind constructor based matrix interpretation:
          The following argument positions are considered usable:
            uargs(cons) = {2},
            uargs(ifinter) = {1},
            uargs(ifmem) = {1}
          
          Following symbols are considered usable:
            all
          TcT has computed the following interpretation:
                  p(0) = [1]                           
                p(app) = [5] x1 + [1] x2 + [2]         
               p(cons) = [1] x2 + [2]                  
                 p(eq) = [0]                           
              p(false) = [0]                           
                 p(if) = [4] x1 + [4] x2 + [4] x3 + [2]
            p(ifinter) = [1] x1 + [4] x3 + [4] x4 + [5]
              p(ifmem) = [1] x1 + [0]                  
              p(inter) = [4] x1 + [4] x2 + [0]         
                p(mem) = [0]                           
                p(nil) = [2]                           
                  p(s) = [0]                           
               p(true) = [0]                           
          
          Following rules are strictly oriented:
          ifinter(true(),x,l1,l2) = [4] l1 + [4] l2 + [5]
                                  > [4] l1 + [4] l2 + [2]
                                  = cons(x,inter(l1,l2)) 
          
          
          Following rules are (at-least) weakly oriented:
                app(cons(x,l1),l2) =  [5] l1 + [1] l2 + [12]    
                                   >= [5] l1 + [1] l2 + [4]     
                                   =  cons(x,app(l1,l2))        
          
                      app(nil(),l) =  [1] l + [12]              
                                   >= [1] l + [0]               
                                   =  l                         
          
                       eq(0(),0()) =  [0]                       
                                   >= [0]                       
                                   =  true()                    
          
                      eq(0(),s(x)) =  [0]                       
                                   >= [0]                       
                                   =  false()                   
          
                      eq(s(x),0()) =  [0]                       
                                   >= [0]                       
                                   =  false()                   
          
                     eq(s(x),s(y)) =  [0]                       
                                   >= [0]                       
                                   =  eq(x,y)                   
          
                   if(false(),x,y) =  [4] x + [4] y + [2]       
                                   >= [1] y + [0]               
                                   =  y                         
          
                    if(true(),x,y) =  [4] x + [4] y + [2]       
                                   >= [1] x + [0]               
                                   =  x                         
          
          ifinter(false(),x,l1,l2) =  [4] l1 + [4] l2 + [5]     
                                   >= [4] l1 + [4] l2 + [0]     
                                   =  inter(l1,l2)              
          
                ifmem(false(),x,l) =  [0]                       
                                   >= [0]                       
                                   =  mem(x,l)                  
          
                 ifmem(true(),x,l) =  [0]                       
                                   >= [0]                       
                                   =  true()                    
          
              inter(l1,cons(x,l2)) =  [4] l1 + [4] l2 + [8]     
                                   >= [4] l1 + [4] l2 + [5]     
                                   =  ifinter(mem(x,l1),x,l2,l1)
          
                    inter(x,nil()) =  [4] x + [8]               
                                   >= [2]                       
                                   =  nil()                     
          
              inter(cons(x,l1),l2) =  [4] l1 + [4] l2 + [8]     
                                   >= [4] l1 + [4] l2 + [5]     
                                   =  ifinter(mem(x,l2),x,l1,l2)
          
                    inter(nil(),x) =  [4] x + [8]               
                                   >= [2]                       
                                   =  nil()                     
          
                  mem(x,cons(y,l)) =  [0]                       
                                   >= [0]                       
                                   =  ifmem(eq(x,y),x,l)        
          
                      mem(x,nil()) =  [0]                       
                                   >= [0]                       
                                   =  false()                   
          
        Further, it can be verified that all rules not oriented are covered by the weightgap condition.
* Step 6: NaturalPI WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            eq(0(),s(x)) -> false()
            eq(s(x),0()) -> false()
            eq(s(x),s(y)) -> eq(x,y)
        - Weak TRS:
            app(cons(x,l1),l2) -> cons(x,app(l1,l2))
            app(nil(),l) -> l
            eq(0(),0()) -> true()
            if(false(),x,y) -> y
            if(true(),x,y) -> x
            ifinter(false(),x,l1,l2) -> inter(l1,l2)
            ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2))
            ifmem(false(),x,l) -> mem(x,l)
            ifmem(true(),x,l) -> true()
            inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1)
            inter(x,nil()) -> nil()
            inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2)
            inter(nil(),x) -> nil()
            mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l)
            mem(x,nil()) -> false()
        - Signature:
            {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {app,eq,if,ifinter,ifmem,inter,mem} and constructors {0
            ,cons,false,nil,s,true}
    + Applied Processor:
        NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Just any strict-rules}
    + Details:
        We apply a polynomial interpretation of kind constructor-based(mixed(2)):
        The following argument positions are considered usable:
          uargs(cons) = {2},
          uargs(ifinter) = {1},
          uargs(ifmem) = {1}
        
        Following symbols are considered usable:
          {app,eq,if,ifinter,ifmem,inter,mem}
        TcT has computed the following interpretation:
                p(0) = 0                                    
              p(app) = 2 + 2*x1 + x2                        
             p(cons) = x1 + x2                              
               p(eq) = x1*x2                                
            p(false) = 0                                    
               p(if) = x1 + 2*x1*x2 + 2*x2 + 2*x3           
          p(ifinter) = 3 + x1 + 2*x2 + 2*x3 + 2*x3*x4 + 2*x4
            p(ifmem) = 2*x1 + 2*x2*x3                       
            p(inter) = 3 + 2*x1 + 2*x1*x2 + 2*x2            
              p(mem) = 2*x1*x2                              
              p(nil) = 0                                    
                p(s) = 1 + x1                               
             p(true) = 0                                    
        
        Following rules are strictly oriented:
        eq(s(x),s(y)) = 1 + x + x*y + y
                      > x*y            
                      = eq(x,y)        
        
        
        Following rules are (at-least) weakly oriented:
              app(cons(x,l1),l2) =  2 + 2*l1 + l2 + 2*x                     
                                 >= 2 + 2*l1 + l2 + x                       
                                 =  cons(x,app(l1,l2))                      
        
                    app(nil(),l) =  2 + l                                   
                                 >= l                                       
                                 =  l                                       
        
                     eq(0(),0()) =  0                                       
                                 >= 0                                       
                                 =  true()                                  
        
                    eq(0(),s(x)) =  0                                       
                                 >= 0                                       
                                 =  false()                                 
        
                    eq(s(x),0()) =  0                                       
                                 >= 0                                       
                                 =  false()                                 
        
                 if(false(),x,y) =  2*x + 2*y                               
                                 >= y                                       
                                 =  y                                       
        
                  if(true(),x,y) =  2*x + 2*y                               
                                 >= x                                       
                                 =  x                                       
        
        ifinter(false(),x,l1,l2) =  3 + 2*l1 + 2*l1*l2 + 2*l2 + 2*x         
                                 >= 3 + 2*l1 + 2*l1*l2 + 2*l2               
                                 =  inter(l1,l2)                            
        
         ifinter(true(),x,l1,l2) =  3 + 2*l1 + 2*l1*l2 + 2*l2 + 2*x         
                                 >= 3 + 2*l1 + 2*l1*l2 + 2*l2 + x           
                                 =  cons(x,inter(l1,l2))                    
        
              ifmem(false(),x,l) =  2*l*x                                   
                                 >= 2*l*x                                   
                                 =  mem(x,l)                                
        
               ifmem(true(),x,l) =  2*l*x                                   
                                 >= 0                                       
                                 =  true()                                  
        
            inter(l1,cons(x,l2)) =  3 + 2*l1 + 2*l1*l2 + 2*l1*x + 2*l2 + 2*x
                                 >= 3 + 2*l1 + 2*l1*l2 + 2*l1*x + 2*l2 + 2*x
                                 =  ifinter(mem(x,l1),x,l2,l1)              
        
                  inter(x,nil()) =  3 + 2*x                                 
                                 >= 0                                       
                                 =  nil()                                   
        
            inter(cons(x,l1),l2) =  3 + 2*l1 + 2*l1*l2 + 2*l2 + 2*l2*x + 2*x
                                 >= 3 + 2*l1 + 2*l1*l2 + 2*l2 + 2*l2*x + 2*x
                                 =  ifinter(mem(x,l2),x,l1,l2)              
        
                  inter(nil(),x) =  3 + 2*x                                 
                                 >= 0                                       
                                 =  nil()                                   
        
                mem(x,cons(y,l)) =  2*l*x + 2*x*y                           
                                 >= 2*l*x + 2*x*y                           
                                 =  ifmem(eq(x,y),x,l)                      
        
                    mem(x,nil()) =  0                                       
                                 >= 0                                       
                                 =  false()                                 
        
* Step 7: NaturalPI WORST_CASE(?,O(n^2))
    + Considered Problem:
        - Strict TRS:
            eq(0(),s(x)) -> false()
            eq(s(x),0()) -> false()
        - Weak TRS:
            app(cons(x,l1),l2) -> cons(x,app(l1,l2))
            app(nil(),l) -> l
            eq(0(),0()) -> true()
            eq(s(x),s(y)) -> eq(x,y)
            if(false(),x,y) -> y
            if(true(),x,y) -> x
            ifinter(false(),x,l1,l2) -> inter(l1,l2)
            ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2))
            ifmem(false(),x,l) -> mem(x,l)
            ifmem(true(),x,l) -> true()
            inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1)
            inter(x,nil()) -> nil()
            inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2)
            inter(nil(),x) -> nil()
            mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l)
            mem(x,nil()) -> false()
        - Signature:
            {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {app,eq,if,ifinter,ifmem,inter,mem} and constructors {0
            ,cons,false,nil,s,true}
    + Applied Processor:
        NaturalPI {shape = Mixed 2, restrict = Restrict, uargs = UArgs, urules = URules, selector = Just any strict-rules}
    + Details:
        We apply a polynomial interpretation of kind constructor-based(mixed(2)):
        The following argument positions are considered usable:
          uargs(cons) = {2},
          uargs(ifinter) = {1},
          uargs(ifmem) = {1}
        
        Following symbols are considered usable:
          {app,eq,if,ifinter,ifmem,inter,mem}
        TcT has computed the following interpretation:
                p(0) = 0                                 
              p(app) = 1 + 2*x1*x2 + 2*x1^2 + x2 + 2*x2^2
             p(cons) = 1 + x2                            
               p(eq) = 1                                 
            p(false) = 0                                 
               p(if) = 2 + 2*x2 + x2*x3 + x3             
          p(ifinter) = x1 + 2*x3*x4                      
            p(ifmem) = x1 + x3                           
            p(inter) = 2*x1*x2                           
              p(mem) = x2                                
              p(nil) = 0                                 
                p(s) = 0                                 
             p(true) = 1                                 
        
        Following rules are strictly oriented:
        eq(0(),s(x)) = 1      
                     > 0      
                     = false()
        
        eq(s(x),0()) = 1      
                     > 0      
                     = false()
        
        
        Following rules are (at-least) weakly oriented:
              app(cons(x,l1),l2) =  3 + 4*l1 + 2*l1*l2 + 2*l1^2 + 3*l2 + 2*l2^2
                                 >= 2 + 2*l1*l2 + 2*l1^2 + l2 + 2*l2^2         
                                 =  cons(x,app(l1,l2))                         
        
                    app(nil(),l) =  1 + l + 2*l^2                              
                                 >= l                                          
                                 =  l                                          
        
                     eq(0(),0()) =  1                                          
                                 >= 1                                          
                                 =  true()                                     
        
                   eq(s(x),s(y)) =  1                                          
                                 >= 1                                          
                                 =  eq(x,y)                                    
        
                 if(false(),x,y) =  2 + 2*x + x*y + y                          
                                 >= y                                          
                                 =  y                                          
        
                  if(true(),x,y) =  2 + 2*x + x*y + y                          
                                 >= x                                          
                                 =  x                                          
        
        ifinter(false(),x,l1,l2) =  2*l1*l2                                    
                                 >= 2*l1*l2                                    
                                 =  inter(l1,l2)                               
        
         ifinter(true(),x,l1,l2) =  1 + 2*l1*l2                                
                                 >= 1 + 2*l1*l2                                
                                 =  cons(x,inter(l1,l2))                       
        
              ifmem(false(),x,l) =  l                                          
                                 >= l                                          
                                 =  mem(x,l)                                   
        
               ifmem(true(),x,l) =  1 + l                                      
                                 >= 1                                          
                                 =  true()                                     
        
            inter(l1,cons(x,l2)) =  2*l1 + 2*l1*l2                             
                                 >= l1 + 2*l1*l2                               
                                 =  ifinter(mem(x,l1),x,l2,l1)                 
        
                  inter(x,nil()) =  0                                          
                                 >= 0                                          
                                 =  nil()                                      
        
            inter(cons(x,l1),l2) =  2*l1*l2 + 2*l2                             
                                 >= 2*l1*l2 + l2                               
                                 =  ifinter(mem(x,l2),x,l1,l2)                 
        
                  inter(nil(),x) =  0                                          
                                 >= 0                                          
                                 =  nil()                                      
        
                mem(x,cons(y,l)) =  1 + l                                      
                                 >= 1 + l                                      
                                 =  ifmem(eq(x,y),x,l)                         
        
                    mem(x,nil()) =  0                                          
                                 >= 0                                          
                                 =  false()                                    
        
* Step 8: EmptyProcessor WORST_CASE(?,O(1))
    + Considered Problem:
        - Weak TRS:
            app(cons(x,l1),l2) -> cons(x,app(l1,l2))
            app(nil(),l) -> l
            eq(0(),0()) -> true()
            eq(0(),s(x)) -> false()
            eq(s(x),0()) -> false()
            eq(s(x),s(y)) -> eq(x,y)
            if(false(),x,y) -> y
            if(true(),x,y) -> x
            ifinter(false(),x,l1,l2) -> inter(l1,l2)
            ifinter(true(),x,l1,l2) -> cons(x,inter(l1,l2))
            ifmem(false(),x,l) -> mem(x,l)
            ifmem(true(),x,l) -> true()
            inter(l1,cons(x,l2)) -> ifinter(mem(x,l1),x,l2,l1)
            inter(x,nil()) -> nil()
            inter(cons(x,l1),l2) -> ifinter(mem(x,l2),x,l1,l2)
            inter(nil(),x) -> nil()
            mem(x,cons(y,l)) -> ifmem(eq(x,y),x,l)
            mem(x,nil()) -> false()
        - Signature:
            {app/2,eq/2,if/3,ifinter/4,ifmem/3,inter/2,mem/2} / {0/0,cons/2,false/0,nil/0,s/1,true/0}
        - Obligation:
            innermost runtime complexity wrt. defined symbols {app,eq,if,ifinter,ifmem,inter,mem} and constructors {0
            ,cons,false,nil,s,true}
    + Applied Processor:
        EmptyProcessor
    + Details:
        The problem is already closed. The intended complexity is O(1).

WORST_CASE(?,O(n^2))